Map Types with ggmap

Jan-Philipp Kolb

Wed Sep 16 08:25:56 2015

Outline

Various map types:

There are more which will be presented next week…

The R-package ggmap will be used in the following to produce different types of maps with the command qmap

Road maps

pic Source

A road map is one of the most widely used map types.

Road maps

Install the library

  1. possibility
install.packages("ggmap")
  1. possibility:

pic

pic

Library ggmap - Hello world

library(ggmap)
qmap("Mannheim")

Map for a sight

qmap("Berlin Brandenburger Tor")

Map for a whole country

qmap("Germany")

Use another zoom level

qmap("Germany", zoom = 6)

Get help with the questionmark

?qmap

Different components in the help

The examples section of help

Extract from the help file on qmap:

pic

This examples can be directly copy-pasted to the console

qmap("baylor university")
qmap("baylor university", zoom = 14)
# and so on

Other zoom level

qmap("Mannheim", zoom = 12)

Get closer

qmap('Mannheim', zoom = 13)

Get very close

qmap('Mannheim', zoom = 20)

ggmap - source OpenStreetMap

qmap('Mannheim', zoom = 14, source="osm")

ggmap - OpenStreetMap - black/white

qmap('Mannheim', zoom = 14, source="osm",color="bw")

ggmap - maptype satellite

qmap('Mannheim', zoom = 14, maptype="satellite")

ggmap - maptype satellite zoom 21

qmap('Mannheim', zoom = 21, maptype="hybrid")

ggmap - maptype hybrid

qmap("Mannheim", zoom = 14, maptype="hybrid")

Terrain/physical maps

Physical maps illustrate the physical features of an area, such as the mountains, rivers and lakes. Colors are used to show relief differences in land elevations.

ggmap - terrain map

qmap('Schriesheim', zoom = 14,
 maptype="terrain")

Abstracted maps

pic

Source: Design faves

ggmap - maptype watercolor

qmap('Mannheim', zoom = 14,
 maptype="watercolor",source="stamen")

ggmap - source stamen

qmap('Mannheim', zoom = 14,
 maptype="toner",source="stamen")

ggmap - maptype toner-lite

qmap('Mannheim', zoom = 14,
 maptype="toner-lite",source="stamen")

ggmap - maptype toner-hybrid

qmap('Mannheim', zoom = 14,
 maptype="toner-hybrid",source="stamen")

ggmap - maptype terrain-lines

qmap('Mannheim', zoom = 14,
 maptype="terrain-lines",source="stamen")

Stamen maps

These high-contrast B+W (black and white) maps are featured in our Dotspotting project. They are perfect for data mashups and exploring river meanders and coastal zones.

Source: http://maps.stamen.com/

Save graphics

pic

ggmap - create an object

MA_map <- qmap('Mannheim', 
               zoom = 14,
               maptype="toner",
               source="stamen")

Geocoding

Geocoding (…) uses a description of a location, most typically a postal address or place name, to find geographic coordinates from spatial reference data …

Wikipedia - Geocoding

library(ggmap)
geocode("Mannheim Wasserturm",source="google")
lon lat
8.462233 49.48371

Latitude and Longitude

pic

Source

Coords of different places in Germany

## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Hamburg&sensor=false
## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Koeln&sensor=false
## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Dresden&sensor=false
## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Muenchen&sensor=false
cities lon lat
Hamburg 9.993682 53.55108
Koeln 6.960279 50.93753
Dresden 13.737262 51.05041
Muenchen 11.581981 48.13513

Reverse geocoding

Reverse geocoding is the process of back (reverse) coding of a point location (latitude, longitude) to a readable address or place name. This permits the identification of nearby street addresses, places, and/or areal subdivisions such as neighbourhoods, county, state, or country.

Source: Wikipedia

revgeocode(c(48,8))
## [1] "Qoriley Rd, Somalia"

Get the distance between 2 points

mapdist("Q1, 4 Mannheim","B2, 1 Mannheim")
##             from             to   m    km     miles seconds  minutes
## 1 Q1, 4 Mannheim B2, 1 Mannheim 746 0.746 0.4635644     211 3.516667
##        hours
## 1 0.05861111
mapdist("Q1, 4 Mannheim","B2, 1 Mannheim",mode="walking")
##             from             to   m    km     miles seconds minutes
## 1 Q1, 4 Mannheim B2, 1 Mannheim 546 0.546 0.3392844     420       7
##       hours
## 1 0.1166667

Get another distance

mapdist("Q1, 4 Mannheim","B2, 1 Mannheim",mode="bicycling")
##             from             to   m    km    miles seconds  minutes
## 1 Q1, 4 Mannheim B2, 1 Mannheim 555 0.555 0.344877     215 3.583333
##        hours
## 1 0.05972222

Take Home Messages/Homework

What you should know:

Homework:

And now some more advanced stuff….

Geocoding - various points of interest

POI1 <- geocode("B2, 1 Mannheim",source="google")
POI2 <- geocode("Hbf Mannheim",source="google")
POI3 <- geocode("Wasserturm Mannheim",source="google")
ListPOI <-rbind(POI1,POI2,POI3)
POI1;POI2;POI3
##        lon      lat
## 1 8.462844 49.48569
##        lon      lat
## 1 8.469879 49.47972
##        lon      lat
## 1 8.473664 49.48483

Points in map

MA_map +
geom_point(aes(x = lon, y = lat),
data = ListPOI)

Points in map

MA_map +
geom_point(aes(x = lon, y = lat),col="red",
data = ListPOI)

ggmap - adding different colors

ListPOI$color <- c("A","B","C")
MA_map +
geom_point(aes(x = lon, y = lat,col=color),
data = ListPOI)

ggmap - bigger dots

ListPOI$size <- c(10,20,30)
MA_map +
geom_point(aes(x = lon, y = lat,col=color,size=size),
data = ListPOI)

Get a route from Google maps

from <- "Mannheim Hbf"
to <- "Mannheim B2 , 1"
route_df <- route(from, to, structure = "route")

More information

Draw a map with this information

qmap("Mannheim Hbf", zoom = 14) +
  geom_path(
    aes(x = lon, y = lat),  colour = "red", size = 1.5,
    data = route_df, lineend = "round"
  )

Resources

More about adding points

pic

Cheatsheet

pic

Resources and literature

ggmap: Spatial Visualization with ggplot2

by David Kahle and Hadley Wickham